package com.gwcloud.leetcode.hot100;

import java.util.Stack;

/** 
* @ClassName   : Leetcode020 
* @author      : ganwei 
* @date        : 2020年5月6日 
* @Description : leetcode20 有效的括号 
*/
public class Leetcode0020 {
    
	/**
     * -解题思路，利用栈判断括号的有效性
     */
	public boolean isValid(String s) {
		Stack<Character> stack = new Stack<Character>();
		for(int i = 0; i < s.length(); i++) {
			char c = s.charAt(i);
			if(c == '(' || c == '[' || c== '{') {
				stack.add(c);
			}
			if(c == ')' || c == ']' || c== '}') {
				char cc = stack.pop();
				if(!isPair(cc,c)) {
					return false;
				}
			}
			
		}
		if(stack.size() == 0) {
			return true;
		}else {
			return false;
		}
    }
    
	public boolean isPair(char c, char cc) {
		if(c == '(' && cc == ')') {
			return true;
		}
		if(c == '[' && cc == ']') {
			return true;
		}
		if(c == '{' && cc == '}') {
			return true;
		}
		return false;
	}
    public static void main(String[] args) {
    	Leetcode0020 l020 = new Leetcode0020();
    	System.out.println(l020.isValid("()"));
    }
}
